

package mx.unam.ia.grafica;

import java.util.regex.*;
import javax.swing.JOptionPane;



/**
 *
 * @author kokherlo
 */
public class Validacion extends javax.swing.JFrame{

    
   public boolean validarExpresiones(String cad1,String cad2,String cad3,String cad4,String cad5,String cad6,String cad7,String cad8)
   {
        boolean enteros=false;
        boolean dobles=false;

       if(validaEnteros(cad1))
        {
            if(validaEnteros(cad2))
            {
                if(validaEnteros(cad4))
                {
                    if(validaEnteros(cad5))
                        enteros=true;
                    else
                        JOptionPane.showMessageDialog(this,"La Población debe ser un valor Entero","Error Población",JOptionPane.ERROR_MESSAGE);
                }
                else
                        JOptionPane.showMessageDialog(this,"Las Generaciones deben ser un valor Entero","Error Generaciones",JOptionPane.ERROR_MESSAGE);
            }
            else
                        JOptionPane.showMessageDialog(this,"Las Terminales deben ser un valor Entero","Error Terminales",JOptionPane.ERROR_MESSAGE);
        }
        else
                        JOptionPane.showMessageDialog(this,"Las Cabezas deben ser un valor Entero","Error Cabezas",JOptionPane.ERROR_MESSAGE);


        if(validaDobles(cad3))
        {
            if(validaDobles(cad6))
            {
                if(validaDobles(cad7))
                {
                    if(validaDobles(cad8))
                        dobles=true;
                    else
                        JOptionPane.showMessageDialog(this,"El % Elitista debe ser un valor entero o flotante","Error Elitista",JOptionPane.ERROR_MESSAGE);
                }
                else
                        JOptionPane.showMessageDialog(this,"La Mutación debe ser un valor flotante","Error Mutación",JOptionPane.ERROR_MESSAGE);
            }
            else
                        JOptionPane.showMessageDialog(this,"La Cruza debe ser un valor flotante","Error Cruza",JOptionPane.ERROR_MESSAGE);
        }
        else
                        JOptionPane.showMessageDialog(this,"El Probabilidad de Operación debe ser un valor flotante","Error Probabilidad Operación",JOptionPane.ERROR_MESSAGE);

        if(enteros && dobles)
            return true;
        else
            return false;
    }
    
   public boolean validaEnteros(String cadena){
    String regex = "^[0-9]+$";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(cadena);
    boolean valexp=matcher.matches();
       return valexp;
    }

   public boolean validaDobles(String cadena){
       String regex = "^[0-9]+[\\.]?[0-9]+$";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(cadena);
    boolean valexp=matcher.matches();
    return valexp;
    }

}
